objects := add.o sub.o
sources := add.cpp sub.cpp
library := libmath.so

#  all规则有什么意义呢？在这个Makefile文件中，all规则只是为了方便用户。如果你在Makefile文件中定义了多个目标，\
  你可以使用all规则来定义默认目标。这样，当用户执行make命令时，make会默认执行all目标，并生成所有的目标文件。\
  这样可以简化用户的操作，使用户不需要知道所有目标的名称，只需要知道执行make命令即可生成所有目标。\
  在这个Makefile文件中，由于只定义了一个目标，因此all规则并没有太大的意义。但是，在实际的项目中，\
  你可能需要定义多个目标文件，并且这些目标文件之间存在依赖关系。这时，你可以使用all规则来定义默认目标，\
  并确保所有的依赖关系都被满足。(注释行的结尾如果存在反斜线（\），那么下一行也被作为注释行。)
all:$(library)

$(library): $(objects)
	g++ -shared -o $@ $^

$(objects): $(sources)
	g++ -fPIC -c $^

.PHONY:clean
clean:
	rm -rf $(objects) $(library)
